/*
 * Copyright (c) 2007-2020 西安交通信息投资营运有限公司 版权所有
 */

package com.xci.edu.core.service;

import com.github.lvyanyang.annotation.OperateLog;
import com.github.lvyanyang.sys.core.BaseSysService;
import com.xci.edu.core.entity.EduStudentTrainLog;
import com.xci.edu.core.dao.EduStudentTrainLogDao;
import com.xci.edu.core.filter.EduStudentTrainLogFilter;
import com.github.lvyanyang.core.BoolResult;
import com.github.lvyanyang.core.PageList;
import com.github.lvyanyang.core.XCI;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * 学员培训日志服务
 * @author 张谦 zhangqian@xci96716.com
 * @since 2020-11-25 09:35:56
 */
@Service
public class EduStudentTrainLogService extends BaseSysService {
    /** 学员培训日志数据层对象 */
    @Resource private EduStudentTrainLogDao eduStudentTrainLogDao;

    /**
     * 新建学员培训日志
     * @param entity 学员培训日志实体
     */
    @OperateLog(msg = "新建学员培训日志", module = "学员培训日志")
    @Transactional(rollbackFor = Exception.class)
    public BoolResult insert(EduStudentTrainLog entity) {
        return save(entity);
    }

    ///**
    // * 是否存在指定主键的学员培训日志
    // * @param id 学员培训日志主键
    // * @return 如果存在返回true
    // */
    //public boolean existById(@NotNull(message = "请指定学员培训日志主键") Long id) {
    //    return eduStudentTrainLogDao.existxById(id);
    //}

    ///**
    // * 是否存在指定名称的学员培训日志
    // * @param name      学员培训日志名称
    // * @param excludeId 排除的主键，如果为null则不指定排除的主键
    // * @return 如果存在返回true
    // */
    //public boolean existByName(@NotBlank(message = "请指定学员培训日志名称") String name, Long excludeId) {
    //    return eduStudentTrainLogDao.existxByName(name, excludeId);
    //}

    /**
     * 查询学员培训日志列表
     * @param filter 过滤条件
     * @return 返回学员培训日志列表
     */
    public List<EduStudentTrainLog> selectList(EduStudentTrainLogFilter filter) {
        return eduStudentTrainLogDao.selectList(filter);
    }

    /**
     * 查询学员培训日志分页列表
     * @param filter 过滤条件
     * @return 返回学员培训日志分页列表
     */
    public PageList<EduStudentTrainLog> selectPageList(EduStudentTrainLogFilter filter) {
        return PageList.of(eduStudentTrainLogDao.selectPageList(filter));
    }

    /**
     * 保存数据,之前和之后的校验和处理
     * @param entity  学员培训日志实体
     */
    private BoolResult save(EduStudentTrainLog entity) {
        //新建时如果主键未指定,自动设置主键
        XCI.ifTrueAction(XCI.invalidId(entity.getId(), true), () -> entity.setId(XCI.nextId()));

        //新增数据库
        eduStudentTrainLogDao.insert(entity);
        return BoolResult.success();
    }
}